package com.drug.lib.util;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.text.TextUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 版权：周和权 版权所有
 *
 * @author zhouhequan
 * 版本：1.0
 * 创建日期：2021/12/17 or 15:45
 * 描述：---
 */
public class PhoneUtils {
    /**
     * 手机号格式校验正则
     */
    public static final String PHONE_REGEX = "^1(3[0-9]|4[57]|5[0-35-9]|7[0135678]|8[0-9])\\d{8}$";

    /**
     * 手机号脱敏筛选正则
     */
    public static final String PHONE_BLUR_REGEX = "(\\d{3})\\d{4}(\\d{4})";

    /**
     * 手机号脱敏替换正则
     */
    public static final String PHONE_BLUR_REPLACE_REGEX = "$1********$3";
    /**
     * 中文名字（2）脱敏替换正则
     */
    public static final String CHINESE_2_BLUR_REPLACE_REGEX = "$1**";
    /**
     * 中文名字（3）脱敏替换正则
     */
    public static final String CHINESE_3_BLUR_REPLACE_REGEX = "$1**$3";

    public static final String REGEX_PWD_SIMPLE = "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[$@$!%*#?&^.~+=-])[A-Za-z\\d$@$!%*#?&^.~+=-]{8,}$";
    /**
     * 手机号格式校验
     *
     * @param phone
     * @return
     */
    public static final boolean checkPhone(String phone) {
        if (TextUtils.isEmpty(phone)) {
            return false;
        }
        return phone.matches(PHONE_REGEX);
    }

    /**
     * 手机号脱敏处理
     *
     * @param phone
     * @return
     */
    public static final String phoneEncrypt(String phone) {
        boolean checkFlag = checkPhone(phone);
        if (!checkFlag) {
            //throw new IllegalArgumentException("手机号格式不正确!");
            return phone;
        }
        return phone.replaceAll(PHONE_BLUR_REGEX, PHONE_BLUR_REPLACE_REGEX);
    }

    /**
     * 中文名字：只展示姓名第一个字
     * 身份证号：年月日脱敏，前6后4不脱敏
     * 手机号：前三后2不脱敏，中间脱敏
     * 银行卡：前6位和后2位不脱敏，中间脱敏
     */
    public static String replaceStr(String param) {
        int len = param.length();
        if (isContainChinese(param)) {
            if (len > 2) {
                return param.replaceAll("(.{1})(.*)(.{1})", CHINESE_3_BLUR_REPLACE_REGEX);
            } else {
                return param.replaceAll("(.{1})(.*)(.{0})", CHINESE_2_BLUR_REPLACE_REGEX);
            }
        }
        return param.replaceAll("(.{" + (len < 12 ? 3 : 6) + "})(.*)(.{2})", PHONE_BLUR_REPLACE_REGEX);
    }

    /**
     * @description:
     * @return: 判断字符串中是否含中文
     * @author: Administrator
     * @date: 2019/10/4
     */
    private static boolean isContainChinese(String str) {
        Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
        Matcher m = p.matcher(str);
        if (m.find()) {
            return true;
        }
        return false;
    }

    public static void callPhone(Context context, String phoneNum) {
        if (TextUtils.isEmpty(phoneNum)) {
            ToastUtil.show("请输入电话号码");
            return;
        }
        Intent intent = new Intent(Intent.ACTION_DIAL);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        Uri data = Uri.parse("tel:" + phoneNum);
        intent.setData(data);
        context.startActivity(intent);
    }

    /**
     * 密码格式校验
     *
     * @param pwd
     * @return
     */
    public static final boolean checkPwd(String pwd) {
        if (TextUtils.isEmpty(pwd)) {
            return false;
        }

        return pwd.matches(REGEX_PWD_SIMPLE);
    }
}
